An Input Method Editor, or “IME,” is a program that transforms user input events into user-specified text for consumption by an application, such as for augmenting a document edited by the application. For example, an on-screen keyboard that performs shape writing, automatic word completion, word prediction, or ideographic character composition can be implemented as an IME, as can an automatic speech transcription mechanism.
Where a user selects a particular IME for use with an application, the operating system typically causes the IME to be loaded into the application's process and executed there. The IME stores the text that it generates in the document within the address space of the application's process. A lock or other synchronization mechanism is used to prevent the application and the IME from writing to the document at the same time, which could result in corruption of the document.